{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**通用最佳实践回顾**\n",
    "\n",
    "- `std::array<T, N>` 在编译期固定长度，零开销封装 C 数组，适合协议头、矩阵、小向量等固定大小缓冲。\n",
    "- 元素连续存储，`data()` 可直接与 C API 交互，支持 `constexpr` 初始化；`fill`、`std::fill` 等批量操作便捷。\n",
    "- 迭代器、引用在对象生命周期内稳定，不存在扩容；但无 `push/pop`，需手动管理索引与边界。\n",
    "- 与 `std::span` 配合，可安全地暴露只读或可写视图，避免拷贝。\n",
    "- 栈上放置大数组需留意栈空间，必要时放静态区或动态分配后转为 `std::array` 风格访问。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| 序号 | 工程场景                | 文件名                      | 说明要点                                                     | 可运行示例代码       |\n",
    "| ---- | ----------------------- | --------------------------- | ------------------------------------------------------------ | -------------------- |\n",
    "| 1    | 协议头定长缓冲          | `array_protocol_header.cpp` | 使用 `std::array<std::uint8_t, N>` 构造/解析网络包头，`data()` 直通 IO | 示例 1：协议头缓冲   |\n",
    "| 2    | 栈上临时工作集          | `array_stack_scratch.cpp`   | 栈上分配小型工作区，`fill`/`std::generate` 快速刷新          | 示例 2：栈上工作集   |\n",
    "| 3    | 编译期查找表            | `array_lookup_table.cpp`    | `constexpr std::array` 构建 ASCII 映射或系数表，启动即可用   | 示例 3：编译期查找表 |\n",
    "| 4    | 固定尺寸环形缓冲        | `array_ring_buffer.cpp`     | 手动维护读写索引，避免动态分配，适合实时日志/采样            | 示例 4：环形缓冲     |\n",
    "| 5    | `span` 视图共享定长数据 | `array_span_view.cpp`       | 以 `std::span` 将数组片段暴露给算法，读取/写入保持零拷贝     | 示例 5：span 视图    |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 示例 1：协议头缓冲（array_protocol_header.cpp）\n",
    "- 示例 2：栈上工作集（array_stack_scratch.cpp）\n",
    "- 示例 3：编译期查找表（array_lookup_table.cpp）\n",
    "- 示例 4：环形缓冲（array_ring_buffer.cpp）\n",
    "- 示例 5：span 视图共享定长数据（array_span_view.cpp）"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "C++17",
   "language": "C++17",
   "name": "xcpp17"
  },
  "language_info": {
   "name": "C++17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
